Repository navigation
refactor(web): let hosts handle request logging - #844
Merged
Merged
Conversation
mnoah1
added this pull request to stack #843
October 12, 2026 18:42
mnoah1
force-pushed
the
mnoah1/web-logging-cleanup
branch
from
October 12, 2026 18:48
91147a3 to
2c2b73b
Compare
mnoah1
removed this pull request from stack #843
October 12, 2026 20:08
mnoah1
added this pull request to stack #847
October 12, 2026 20:08
mnoah1
force-pushed
the
mnoah1/web-logging-cleanup
branch
from
October 13, 2026 13:41
2c2b73b to
4f7c843
Compare
This was referenced Oct 13, 2026
mnoah1
force-pushed
the
mnoah1/web-logging-cleanup
branch
from
October 13, 2026 17:10
4f7c843 to
b0e942e
Compare
mnoah1
force-pushed
the
mnoah1/web-logging-cleanup
branch
from
October 13, 2026 17:24
b0e942e to
c1c65fb
Compare
mnoah1
marked this pull request as ready for review
October 13, 2026 19:24
mnoah1
force-pushed
the
mnoah1/web-logging-cleanup
branch
from
October 13, 2026 19:31
c1c65fb to
0ff9f70
Compare
Send web logs through per-request callbacks so hosts can use their own logging context. Keep Pino in the reference hosts, preserve original errors and structured fields, and isolate callback failures from page results. Builds on the web E2E layer in #838.
mnoah1
force-pushed
the
mnoah1/web-logging-cleanup
branch
from
October 14, 2026 15:21
0ff9f70 to
d45b877
Compare
prathshenoy
approved these changes
Oct 14, 2026
github-merge-queue
Bot
removed this pull request from the merge queue because a pull request earlier in the stack was removed
Oct 14, 2026
DivyanshGarg380
pushed a commit
to DivyanshGarg380/submitqueue
that referenced
this pull request
Oct 14, 2026
## Why? Much of the structure around the new SubmitQueue UI is reusable for a Stovepipe UI as well. This PR pulls out common components into shared packages that can be used across both services to minimize duplication. ## What? - Move shared React navigation, polling, timestamp formatting, path-segment helpers, and styles into `web/platform` (`@submitqueue/web-platform`). - Move common Basic auth, Node gRPC transport, Next.js navigation, and readiness checks into `web/service/shared` (`@submitqueue/web-service-shared`). Service-specific configuration stays in the host. - Update SubmitQueue to import the shared implementations directly, preserving its public exports and existing behavior. - Share the Bazel library build, packaging, and lint setup, and update workspace and package-consumer checks. ## Test Plan Shared-package checks and the existing SubmitQueue browser suite passed; the latest rebased stack passed all 32 targets with `./tool/bazel test //web:check //web/test/e2e/submitqueue:web_test //web/test/e2e/stovepipe:web_test --test_output=errors`. To validate this PR independently: ```sh ./tool/bazel test //web:check //web/test/e2e:web_test --test_output=errors ``` Repository formatting, lint, module tidy, and Gazelle checks also passed. ## Revert Plan Revert dependent PRs uber#844, uber#838, and uber#837 first if merged, then revert this PR to restore the original SubmitQueue package layout. ## Stack 1. uber#842 — shared-package refactoring 2. uber#837 — Stovepipe frontend 3. uber#838 — browser coverage and E2E organization 4. uber#844 — host logging integration
DivyanshGarg380
pushed a commit
to DivyanshGarg380/submitqueue
that referenced
this pull request
Oct 14, 2026
## Why? Stovepipe exposes request lists, status summaries, and history through RPCs, but has no browser view for inspecting them. Add a basic UI mirroring the same structure as the SubmitQueue UI: a core component that can be deployed internally via FusionJS that includes the pages / contents, and a NextJS wrapper for external use. https://github.com/user-attachments/assets/0bdf1fd9-36ea-4bea-b540-826d8047e6a2 ## What? - Add `web/stovepipe`, a React library with a request list for each configured queue and a request page showing the backend status summary followed by request history. - Load the summary and events together through `GetRequestHistoryByID`. Request IDs link to `/<queue>/request/<id>`; change URIs remain displayed as text. Display the backend summary directly, including state, change and baseline URIs, timestamps, and outcome reason. - Provide manual refresh and optional polling, retaining successful sections when a refresh fails on the same page. - Add a thin Next.js host under `web/service/stovepipe` for authentication, configuration, server-side RPC transport, and logging, plus TypeScript bindings for the existing API and Bazel build/image targets. - Add the local Compose overlay and `make local-stovepipe-web-start`, along with library, component, host, and package tests. ## Test Plan Latest validation passed all 32 targets with `./tool/bazel test //web:check //web/test/e2e/submitqueue:web_test //web/test/e2e/stovepipe:web_test --test_output=errors`, including real-backend coverage of request-ID navigation, status summaries, history, and refresh. Frontend and package checks passed as part of the validation above, which also built the Stovepipe image. On this PR: ```sh ./tool/bazel test //web:check --test_output=errors ./tool/bazel build //web/service/stovepipe:image ``` For manual review, run `make local-stovepipe-web-start`, open the printed URL, and sign in with username `test` and password `test` (or the configured `STOVEPIPE_WEB_TOKEN`). ## Stack 1. uber#842 — shared-package refactoring 2. uber#837 — Stovepipe frontend 3. uber#838 — browser coverage and E2E organization 4. uber#844 — host logging integration This PR's diff contains the Stovepipe additions; review the preparatory refactoring in uber#842. Merge in this order.
DivyanshGarg380
pushed a commit
to DivyanshGarg380/submitqueue
that referenced
this pull request
Oct 14, 2026
## Why? The new Stovepipe UI needs browser coverage against a real backend, in addition to its unit and component tests. Align both services' browser suites under `web/test/e2e/<domain>` so they follow the repository layout and reuse stack setup helpers. ## What? - Move the existing SubmitQueue browser suite into `web/test/e2e/submitqueue`, preserving its browser spec and Compose overlay. - Add `web/test/e2e/stovepipe` with real ingestion and seeded pagination data. Cover queue navigation and cursors, request-ID links and reloads, backend status summaries above history, refresh, empty queues, and accessibility. A summary with a newer state than the history verifies that the UI does not reconstruct status from events. - Share image loading, schema application, and port lookup helpers. Both browser runners use the Bazel-pinned Compose executable from uber#830. - Update Bazel targets and visibility, workspace entries, runner commands, and test documentation for the new layout. Tests emit queue and request-page screenshots as Bazel test outputs. ## Test Plan Latest validation passed all 32 targets, including both services' real-stack browser suites: ```sh ./tool/bazel test //web:check //web/test/e2e/submitqueue:web_test //web/test/e2e/stovepipe:web_test --test_output=errors ``` Repository formatting, lint, module tidy, and Gazelle checks also passed. Browser tests require a running Docker daemon; Bazel supplies Compose and the browser. ## Stack 1. uber#842 — shared-package refactoring 2. uber#837 — Stovepipe frontend 3. uber#838 — browser coverage and E2E organization 4. uber#844 — host logging integration
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Why?
The reusable web libraries currently require Pino and receive one logger when the module is constructed. A host with a different logger must adapt that dependency, and a shared module cannot bind logging directly to each viewer's request context. The host should own logging integration.
What?
SubmitQueue and Stovepipe now receive an optional synchronous
onLog(level, message, metadata)callback on eachhandlerequest. Logs preserve severity, the original error undererror, correlation IDs, and page paths. Missing callbacks are silent; a throwing callback cannot change page results or replace the original failure.Pino imports, package requirements, silent logger construction, and test logger casts are removed from the reusable libraries. The Next.js reference hosts keep Pino through one shared adapter, which maps
errorto Pino's serializederrfield. Page loads and readiness checks use the callback. Stovepipe also reports unexpected page failures before rethrowing them.Test Plan
Latest validation passed all 32 targets with
./tool/bazel test //web:check //web/test/e2e/submitqueue:web_test //web/test/e2e/stovepipe:web_test --test_output=errors, including both browser suites and image builds.make lint check-tidy check-gazellealso passed.Earlier validation:
./tool/bazel test //web:check --test_output=errors— all 30 targets passed, including package boundaries, React 18 consumption, log severity/error serialization, overlapping request isolation, and failing logging sinks../tool/bazel test //web/test/e2e/submitqueue:web_test //web/test/e2e/stovepipe:web_test --test_output=errors— both real-stack browser suites passed (five SubmitQueue scenarios and one Stovepipe scenario)../tool/bazel build //web/service/submitqueue:image //web/service/stovepipe:image— both deployment images built.make lint check-tidy check-gazelle— passed without unrelated file changes.